package com.designpatterns.chainofresponsibilitypattern;

public abstract class AbstractLogger
{
	public static int INFO = 1;
	public static int DEBUG = 2;
	public static int ERROR = 3;

	protected int level;

	// 责任链中的下一个元素
	protected AbstractLogger nextLogger;

	public void setNextLogger(AbstractLogger nextLogger)
	{
		this.nextLogger = nextLogger;
	}

	// 3级会打印2级和1级的信息
	public void logMessage(int level, String message)
	{
		if (this.level <= level)
		{
			write(message);
		}
		if (nextLogger != null)
		{
			nextLogger.logMessage(level, message);// 这里对象已经变成nextLogger了，调用nextLogger的logMessage方法
		}
	}

	abstract protected void write(String message);
}
